package com.xgluo.jframe;

import javax.swing.*;
import javax.swing.filechooser.FileSystemView;
import java.awt.*;
import java.io.File;

/*
 * @Description: 打开文件选择器
 * @date 2024/11/27 11:00
 * @author LXG
 */
public class SelectPathFile {

	JFrame jf;
	public String openFileDialog() {
		//调用操作系统的文件选择对话框
		jf = new JFrame("TextField案例");
		FileDialog fileDialog = new FileDialog(jf);

		fileDialog.setTitle("选择文件");
		fileDialog.setVisible(true);
		String filePath = fileDialog.getFile();
		// 未选择任何文件时提示信息后递归调用打开文件选择器
		if(filePath == null || filePath.isEmpty()) {
			JOptionPane.showMessageDialog(this.jf, "未选择任何文件");
			//filePath = this.openDialog();
		}else {
			filePath = fileDialog.getDirectory() + filePath;
		}
		// jf.pack();
		// jf.setLocation(400, 200);
		jf.dispose();
		return filePath;
		// jf.addMouseListener();
	}

	public void close() {
		/*
		 * 0:不执行任何操作
		 * 1：隐藏界面，setVisible(false)
		 * 2: 隐藏并释放窗体，dispose();
		 * 3: 直接关闭应用。
		 */
		this.jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		System.exit(0);
	}

	public String openDialog() {
		jf = new JFrame("TextField案例");
		jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		// java内置打开文件框
		JFileChooser fd = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
		// JFileChooser.OPEN_DIALOG：支持“打开”文件操作。
		//fd.setFileSelectionMode(JFileChooser.FILES_ONLY);
		int selectResult = fd.showOpenDialog(this.jf);
		String url = "";
		if (selectResult == JFileChooser.APPROVE_OPTION) {
			File f = fd.getSelectedFile();
			url = f.getPath();
		}else {
			JOptionPane.showMessageDialog(null, "用户取消了选择");
		}
		return url;
	}
}